home *** CD-ROM | disk | FTP | other *** search
/ HyperLib 1997 Winter - Disc 1 / HYPERLIB-1997-Winter-CD1.ISO.7z / HYPERLIB-1997-Winter-CD1.ISO / オンラインウェア / UTIL / GripGrop 1.0.sit / GripGrop 1.0 / 読まなくてもいいよ13 < prev    next >
Text File  |  1996-05-26  |  24KB  |  346 lines

  1. ■ 開発日記 巻之十三
  2.  
  3. OSTRA / Takeshi Yoneki
  4.  
  5. {*****}
  6.  
  7. 實篤1.0公開後のバグリスト
  8.  
  9. 1.インデックスのリソースサイズでインデックス数を得るが、ごくまれに戻り値が-1となる可能性があり、そのときはかなり危険な動作がありうる。ただしリソース書込みはないのでログは安全。
  10. 2.インライン時にセレクト開始位置を保存していない。
  11. 3.メールへの発言やコメントのファイル名とヘッダがメール形式になっていない。
  12. 4.HPへの発言やコメントのファイル名が先頭1文字欠ける。
  13. 5.新規保存した名前がウィンドウメニューに反映されない。
  14. 6."-"、";"、"/"等のメタキャラクタが「ポストから開く」メニューで解釈される。
  15. 7.ATOKのキャプスキーでのメニューの書き換えが即時に反映されない。
  16. 8.ダイアログのエディットボックスでのペーストが効かない。
  17. 9.インライン途中でのウィンドウ切り替えで日本語入力が誤動作。
  18.  
  19. 1996.04.19
  20.  
  21. {*****}
  22.  
  23. 注:
  24.  もちろんすべて解決済みです。
  25.  
  26. {*****}
  27.  
  28.  使いもしないのにMacWORDをVer.4にアップデートした。もはやVJE-Deltaさえあればいいのだから、店頭でFEPだけ買った方が安いかもしれない。
  29.  で、いつものようにEvenBetterBusErrorを使って動かしてみた。なんと、ついにMacWORDまでもがこのチェックにひっかかるようになってしまった。動作は重くても、最も安心して使えるワープロだっただけに失望は大きい。
  30.  一応バグレポートはFAXしたが、きちんとした対応がないならば、もはやゴミ箱行きは必至。次からはVJEの単体だけ新たに買うかもしれない。
  31.  COCO姉ちゃんから新しい褌・エディット1.6a1からjgawkが呼べないとの報告。CodeWarriorに移植したときにバグ修正のつもりが、バグを入れこんでいた。
  32.  
  33.  實篤、GripGrop、褌・エディットの連携実装も大詰めを迎えている。あとは褌・エディットからGripGropを呼び出さなくてはいけない。これだけはC++でなくてPascalなのでコードの使い回しが全く効かない。なんとも二度手間だ。
  34.  GripGropを作って思ったのだが、なんでこういうツールがいままでなかったのだろう。本当はあったんじゃないだろうか。私が知らないだけか? なかったとは思えない。
  35.  ファイルをテキスト検索するだけのソフトは過去にもいくつかあったことは想像できる。しかし、必要なのはその結果をフォローする環境だ。GripGropはある種のランチャと呼べなくもない。
  36.  結局私の欲しかった環境は、grep結果を使ってタグジャンプすることだった。DOS環境ではgrep、エディタ、シェル(grep結果のリダイレクトのため)がうまく組み合わさって動いている。エディタとシェルをVzだけにしている人も多い。これをどうにかマックに載せたかったのだ。
  37.  タグジャンプする機能を誰が持つとか、ファイルの同定をどうするか(相対パス?絶対パス?)といったことを考えつつ時間ばかりが過ぎていった。Edit7が1つの回答でもあった。これに惑わされていたのかもしれない。多少不自由はしても動いているものがあるというのは、新たに作るという意欲を半減させるものとなるからだ。
  38.  今回、實篤に検索機能を用意しなくてはと思い立って、再び「grep結果を使ってタグジャンプ」の考えがよみがえった。そして、時々思い出しては温めていたアイディアを実装したのである。行番号を使わないというのはアイディアのひとつだ。
  39.  結局はgrepとシェルの機能を持てばいいとわかった。タグジャンプはAppleEventでできると踏んだのであった。
  40.  「超」整理法でのパソコンの使い方に耐えうる検索ツールに仕上がったと思う。
  41.  脆弱だといわれているマックでのテキスト処理が少しでも改善されれば幸いである。
  42.  
  43.                 DOS環境                 GripGrop環境
  44. 発見場所        行番号表示              ファイル上のバイト位置
  45. ファイルの同定  基本的に相対パス        ボリューム名+ディレクトリID
  46. タグジャンプ    エディタが行なう        GripGropからAppleEvent
  47. 結果の保存      shellに任せる           GripGropで保存
  48. 許容行サイズ    任意だが通常有限        行に依存しない
  49.  
  50. 1996.04.23
  51.  
  52. {*****}
  53.  
  54.  GripGropはデフォルトで英語版MS-WORDやDocViewerの文書を検索対象にしている。これらの文書はバイナリファイルなのだが、まあだいたいテキストの部分はそのまま入っているので検索でヒットする。アップルの開発者向け文書は、大昔は英語版MS-WORDで、ちょっと前まではDocViewerで提供されていた。大昔といっても1994年の「develop」のCD-ROMには英語版MS-WORDでのテクニカルノートが入っているのだからそんなに昔でもない。ところが最近、アップルは開発者向け文書をAcrobatで提供するようになっている。これが【倍角開始】「最悪!」【倍角終了】だ。
  55.  Acrobat文書はGripGropでは検索できない。検索対象にしてもかまわないが、何もヒットしないであろう。Acrobatはテキストになんらかのスクランブルをかけている。テキストをテキストとして見ることができないのである。
  56.  Acrobat文書ビュアーに強力かつ高速な複数文書の検索エンジンがあるとかなら文句は言わない。Acrobat文書ビュアーにはこれらの機能が「敢えて」削除されているような気配がある。こんな文書は読めない。どうにも使えない。
  57.  なぜアップルはこんなもので開発者向けドキュメントを配布するのだろう。どう考えても【4倍角開始】「マック向けにアプリケーションを開発して欲しくない」【4倍角終了】としか思えない。
  58.  文書を簡単に転用されたくないという要求に応える技術がAcrobatであることは理解するが、開発者向け文書でそんなことをしてどうするのだろう。文書の電子化の最大の理由と利点は検索性の向上にあるのではなかったか? 検索できない電子文書はただのゴミデータである。紙の方がよっぽどマシだ。私はCodeWarriorをインストールしたら、まずAcrobat文書を全部消している。使えないうえにサイズがでかいからである。
  59.  とにかくAcrobatは最悪。早くなんとかしなさいアップル!
  60.  
  61. 1996.04.24
  62.  
  63. {*****}
  64.  
  65.  Info Mac VIIIが送られてきた。そのなかにファイル検索犬ポチというテキスト検索ソフトがあった。もしかして私はいらないソフトを作ってしまったのかと思いつつチェックしてみた。
  66.  いきなり0番地書き込みしてるので、EvenBetterBusErrorをはずして再起動するハメになってしまったが、なかなか面白そうなソフトだ。多少癖はあるが、ある程度機能は豊富のようだ。
  67.  試しに茄子(實篤)ログから「實篤」という文字を検索させた。70秒であった。GripGropは40秒、Edit7が180秒なのでポチは結構速い部類だ。
  68.  よくみると實篤よりポチの方が1件多くヒットしていると気づいた。どこに違いがあるのだろうと調べると、ポチは「實」と「篤」の間に改行があってもヒットさせていると気づいた。GripGropではそれはヒットしない。ポチの方が強力な検索をしているのである。そこがスピードの違いになっている。
  69.  ログファイルの検索をさせるとなると、確かに改行をまたいだ単語の検索のニーズがある。COCO姉ちゃんも欲しがってたな。こういうことだったのね。
  70.  GripGropのスピードは機能のなさに依存しているようなものなので、これは悩みどころだ。う〜んどうしようなぁ。
  71.  
  72. 1996.04.25
  73.  
  74. {*****}
  75.  
  76. 注:
  77.  その後結局デリミタ文字を無視するというオプションを用意した。検索スピードを犠牲にしてでも必要な機能と判断。
  78.  
  79. {*****}
  80.  
  81.  天王町の蕎麦屋で読売新聞を読んでいたら社会面にこの業界関連の話題が2つ掲載されていた。
  82.  ひとつめ。SCE(Sony Computer Entertainment)に公正取引委員会の手が入った。プレイステーションの販売方法にはやはり法的問題があったわけだ。
  83.  「健全な市場形成のためには定価販売を」なんてことをずっといいはってきたが、それを維持するために販売店に圧力かけるなんて大企業のエゴとしかいえないよ。ヤミ再販の疑いがあるそうだけど、どの店いってもどんなクソソフトでも5800円ってのはないと思うぞ。値段ってのはそれなりに内容判断の基準になってるんだからね。音楽CDと違ってゲームってのは結局手に入れてやってみるまでは結局クソかミソかわかんないんだから。
  84.  もひとつ。毎日コミュニケーションズが写真家から訴えられた。CD-ROM Fanという雑誌でその写真家のCD-ROMに入ってる写真を無断で使用したということで謝罪広告と慰謝料2000万円が請求されている。ついにやったかという事件。やると思ってた思ってた。
  85.  編集部としては忙しいんだかなんだか知らないが事後承諾でどうにでもなると思っていたのだろう。たいていはそれで通ってしまうし、悪意があるわけではないはずだから。だが、問題は事前連絡なしでしかも間違って紹介されたってところだ。片方ならまだしも重なったら言い訳はできまい。編集部のずさんさが完全に露呈したわけだ。以前からいってるが、きちんと雑誌が作れないなら作らなくて結構。そんないいかげんに作られた雑誌なんていらないよ。紙資源の無駄。
  86.  やはり古くからの新聞社系の出版社だってのが問題なのかな。編集サイドは「載せてやってるんだ」って意識を持っていると想像される。それに比べこの業界の出版社はそういう老舗に比べれば桁違いに若いのでそういった意識を感じさせないところがほとんどだ。BNNもソフトバンクもアスキーも翔泳社もきちんとしている。
  87.  著作権で食ってるくせに他人の著作権に鈍感なのが老舗の新聞社系の出版社の特徴なのかね。パソコン雑誌なんてジャーナリズムでなくて商品カタログだってのに。
  88.  はっきりいいます。「載せてやって」くださらなくて結構です。いや違う。毎日コミュニケーションズの雑誌には私の作品を掲載しないでください。毎日コミュニケーションズの出版物は私の作品の掲載を禁止します。もちろん添付もです。
  89.  読者の知る権利? 読者は他の雑誌やメディアで知ることができるのでいいのです。
  90.  
  91. 1996.05.10
  92.  
  93. {*****}
  94.  
  95.  何人かの人から實篤がときどきコケることがあるとの話は届いていたが誰も再現性は追及できなかった、というか追及していなかったのだろう。私の環境では一度も問題の現象を見たことがない。
  96.  安藤さんからの最初のメールは再現性のあるコケのパターンを見つけたというもので、手順が記載されていた。しかしやはり私の環境では再現しなかった。ログファイルに依存する問題は手順での再現性はあまり意味がないのだ。
  97.  で、安藤さんから再びメールで「合計16KByte程度ですがログを送りましょうか」ときた。これは願ったりだった。早速これを受け取って再現させてみた。
  98.  
  99.  みごとにコケた。
  100.  
  101.  安定してコケるログだった。追跡を始めた。一覧に表示する形にするインデックスのリンク順序付けが途中で終っていた。5つあるはずの配列の値が2つまでしか埋まってなかった。あとはデタラメな値だ。
  102.  最初の表示ではきちんと表示されるのになぜだろうと疑問を持ちながら、リンク順にする前のリスト作成を追いかけた。なんとも使い勝手が良いとはいえないCodeWarriorのデバッガであちこち見ていたら2つめのインデックスのレスポンスリンクの先がなんとも不可解な値になっていた。
  103.  変なポインタが紛れ込んでいた。ここで気がついた。発言番号からインデックスを引っ張る関数で高速化のためのキャッシュをポインタ1個分保持していたのだ。それはきちんと初期化されているだろうか? 会議室クラスのコンストラクタでは初期化されていた。まてよ、別の会議室に行ってから戻ってきたらコンストラクタなんて通らない。会議室の移動では会議室クラスインスタンスの生成も破棄もあるわけない。しまった、これはインデックスクラスインスタンスを会議室クラスインスタンスに関連付けるときに初期化しなくてはならない。
  104.  というわけで、ありがちな「初期化されていないポインタ問題」だったと判明。間違った値だが、實篤のヒープの中だってことでEvenBetterBusErrorにもひっかからないのであった。
  105.  発言番号からインデックスを引っ張る関数で、要求する発言番号とたまたまメモリに残っていたゴミが一致するための条件を満たしたのが安藤さんの送ってくれたログだった。最初の一回で一致しなければそのポインタは捨てられて問題なく動いてしまう。ログのリンク構造に依存する問題であった。
  106.  
  107. 1996.05.13
  108.  
  109. {*****}
  110.  
  111.  パピコンじゃないやポケコンSHARP PB-E500届きました。
  112.  28KByteの広大なメモリ空間! 高速な8bit CPU! 高機能な非構造化BASIC言語! 240*32ドットの精緻なディスプレイ! どれをとっても二昔前の仕様ですね。今だと安物の電子手帳がこのくらいの仕様かなぁ。あ、でもシリアルポートは9600bpsまであるんだぁ。シリアルインターフェースが見つからなけりゃ意味ないんだけど。
  113.  驚いたのは12年前に買ったポケコンに比べてかなりでかいことでかいこと。観音開きじゃない分HP 200LXより面積は広い。さすがにHP 200LXの方が厚みはある。
  114.  バッテリーが単4電池ってのが楽でいいね。12年前のポケコンはボタンタイプの電池で交換が面倒だったおかげで今は見捨てられてしまって久しい。電卓としての需要はあったんで何度か電池交換もしたんだけどね。最近は電卓に不自由していたわけだ。
  115.  電卓の用途はデバッグ時のアドレス計算だから、普通の16進電卓が一番楽なんだけど多少(ずいぶんと)オーバースペックかもしれない。ま、実に良い高級電卓です(高級な電卓であることは間違いない)。思わぬグレードアップであった。
  116.  でも、でかい。
  117.  
  118. 1996.05.13
  119.  
  120. {*****}
  121.  
  122. Date: Tue, 14 May 1996 17:38:12 +0900
  123. To: xyoneki@meis.sony.co.jp
  124. Subject: Marking
  125.  
  126. 新田です。
  127.  
  128.  >> ccに自分を入れるのを忘れたんで、さっきのメール再送してください。
  129.  
  130. って事で返します。
  131.  
  132. ---------------------------------------------------------------------
  133. >>新田さん
  134. あの後考えていたんですが、前から思っていた「マーキング機能が必要だ」
  135. ということと結局同じだとわかりました。
  136. 實篤に発言のマーク機能を用意して、實篤ではそれを「マークした発言にジ
  137. ャンプ」という形で利用すればいいということです。UI的にはヒストリー
  138. に近いものを想定しています。
  139. マーキングしたときにログと同じ構造でフォルダを作って、各発言対応の
  140. 「マークファイル」をネーミングルールを決めて保存するってことで良いと
  141. 思います。
  142.  
  143.         マークフォルダ -+- NIFTY-J -+- マークファイル
  144.                         |           +- マークファイル
  145.                         +- PCVAN
  146.                         +- ASCIINET
  147.  
  148. ってな構造です。
  149.  
  150.  
  151. ★ 實篤マーキング機能仕様ドラフト ★
  152.  
  153. ■ マークファイルのネーミングルール
  154.  
  155. 具体例でいうと
  156.         @FMACPRO-003(001)-956
  157. が基本、ログファイルの"#"を"@"にして、後ろに発言番号を付加します。
  158. 発言番号が0のばあいがあるので、そういうものは
  159.         @MAIL-001(001)-0-1
  160. といった形になります。発言番号の後に単純に順序数を付け加えます。
  161. 使ったマークファイルは"@"を"_"にでもすればよいでしょう。實篤では"@"
  162. を付けたファイルのみ見るようにします。オプションで"_"で始まるファイ
  163. ルの削除を用意してもいいですしね。
  164.  
  165. ■ マークファイル内容
  166.  
  167. 具体例でいうと
  168. ----------
  169. 956, 0, 96.05.14, 1
  170. GCC01675
  171. OSTRA
  172. デバッグ協力要請
  173. ----------
  174. 内容は
  175. ----------
  176. 発言番号, リンク先, 年月日, 既読等フラグ
  177. ID
  178. ハンドル
  179. タイトル
  180. ----------
  181. でまずは始めます。
  182.  
  183. ■ マークファイルの属性
  184.  
  185. クリエータ: 'HunB'
  186. ファイルタイプ: 'Mark'
  187.  
  188. では意見をお願いします。
  189.  
  190. Takeshi Yoneki
  191.  
  192. E-mail : xyoneki@meis.sony.co.jp
  193. Nifty-Serve : GCC01675
  194. 米木 武
  195.  
  196. {*****}
  197.  
  198. Date: Tue, 14 May 1996 19:25:27 +0900
  199. To: Takeshi Yoneki <xyoneki@meis.sony.co.jp>
  200. Subject: Re: simatta2
  201.  
  202. Takeshi Yoneki さんが 96/05/14ごろに「simatta2」の件で以下の様に書きました:
  203.  
  204.  >> またccに自分を忘れてしまいました。転送よろしく。
  205.  
  206. なんだかなぁ
  207.  
  208. ------------------------------------------------------------------------
  209. Subject: Re^2: Marking
  210. Date: Tue, 14 May 96 19:03:52 +0900
  211. From: Takeshi Yoneki <xyoneki@meis.sony.co.jp>
  212.  
  213. > これって、自由にマークフォルダーの場所を決められるってことでしょうか?
  214.  
  215. 基本的にログフォルダとかポストフォルダと同じような扱いで考えていま
  216. す。Prefファイルの中身を教えてもいいのですが、バイナリファイルなんで
  217. リソースじゃないですよ。XCMDでやらないといけないでしょうね。
  218.  
  219. > これだけあればパーフェクトです。最初の行に、識別できる何かがあると
  220.  
  221. そうですね、ネーミングだけでなくマジックナンバーに相当する何かがあっ
  222. た方がいいかもしれませんね。
  223. 實篤はファイルタイプでもチェックできますが、ツールは一般的なテキスト
  224. でも動ければ手動で動作させることもできますね。
  225.  
  226. ----------
  227. MARKFILE
  228. 956, 0, 96.05.14, 1, 222
  229. GCC01675
  230. OSTRA
  231. デバッグ協力要請
  232. ----------
  233. 内容は
  234. ----------
  235. MARKFILE(固定文字列)
  236. 発言番号, リンク先, 年月日, 既読等フラグ, 本文サイズ
  237. ID
  238. ハンドル
  239. タイトル
  240. ----------
  241. とでも改定しましょう。
  242.  
  243. > 確か、ファイルタイプ: 'TEXT' でないとHyperCardの標準では読めなかった
  244. > 気がします。まあXCMDで読めば読めますが.....
  245.  
  246. これはちょっと曲げられませんね、'TEXT'はログだと茄子で決められてしま
  247. ってますから。XCMDでがんばるしかないでしょうね。
  248. XCMDってTHINK Cで作るって意味かな?
  249.  
  250. >>島川氏はマック使いだったっけ??
  251.  
  252. 楽しいこと始めてるよんとccで見せて悔しがらせてるだけです(^^)
  253. マック買えば参加できるのにねぇ。
  254.  
  255. このマーキング機能は「栞」と表現することに決まりました。
  256. 読めるかな? ちゃんとwnnの辞書には入ってたな、えらいえらい。
  257.  
  258. Takeshi Yoneki
  259.  
  260. E-mail : xyoneki@meis.sony.co.jp
  261. Nifty-Serve : GCC01675
  262. 米木 武
  263.  
  264. {*****}
  265.  
  266. 注:
  267.  栞ファイルの正式な仕様は實篤・取扱説明書を参照してください。微妙に変化してます。
  268.  
  269. {*****}
  270.  
  271.  茄子R0.3βが公開された。起動時のログの正当性のチェックをはずしたそうで起動はやたらと速くなっている。實篤の起動速度は普通に作った結果なのでどうでもいいことなのだが、ユーザにとってみれば非常にアピールした部分であった。とりあえずそのへんでの優位はなくなったと思う。實篤はある程度の正当性のチェックをオンデマンドでやっている(最初に一気にやるのでなく必要になったときにやってるってこと。負荷の分散ともいう)。まさか茄子R0.3βはそれさえやめたのではあるまいな。
  272.  機能性に関して實篤が茄子Rに影響を与えたのは事実であろう。もちろん實篤だって茄子Rを参考にした部分はある。この点は「良いアイディアはどんどん採用する」でいいと思う。
  273.  問題は安定性だ。安定性に関してはドキュメントにも「まだ不安定な部分がある」と書いてあるので、この1つ前のバージョンよりレベルダウンしている可能性がある。まあ、使わないから確認はできない。
  274.  安定性は機能と違って真似できない部分なので茄子Rの不安定さは簡単には解消しないであろう。茄子Rが安定したなら實篤の役割は終わるのだが、その日が来るとは到底想像できない。YooEditが安定したらHUNDOSHI-EDITの役割は終えると思っていたのだが全然安定する気配もない。
  275.  で、もうひとつ問題は茄子R0.3βでは'Pnut'でないクリエータのログファイルを読まなくなったことだ。共存可能と思っていたし、併用しているユーザも多いというのに。
  276.  ともかくこれで實篤と茄子Rは住み分けなくてはいけないことになってしまった。私としては實篤の方がマイナーな存在でいたいと思っている。ともかく高機能化は私の性に合わない。高機能なログブラウザを使いたい方は茄子Rをどうぞ。
  277.  ああ、高機能化がなんで嫌いなのかを説明しなかったな。やはりSoftware Toolsという考え方が好きだからということに尽きる。インターフェースがオープンになっている複数のツールを組み合わせてなんとかするってのが基本だと思っている。そう、UNIXやOpenDocの基本的な考え方そのものだね。まあ、バイナリサイズでは實篤は茄子Rより大きくなってしまってるんだけど(^^;)。
  278.  地味にいきましょう。
  279.  
  280. 1996.05.16
  281.  
  282. {*****}
  283.  
  284. 注:
  285.  茄子R0.3βは起動時のチェックを会議室選択時に変更したそうで、チェックがなくなったわけではないとのことです。
  286.  また、とりあえず一方的に共存可能にするためのオプションを實篤に用意しました。
  287.  
  288. {*****}
  289.  
  290.  茄子R0.3βでなぜ'Pnut'のファイルしか読まなくなったのか考えていた。最初は實篤バッシング以外の考えは浮かばなかったが、一つ別の技術的予測が浮かんできた。
  291.  ともかく實篤の起動スピードが衝撃的だったのは事実であろう。で、「本当は茄子Rは大切なログファイルチェックを起動時にやってるのに、それを怠ってる實篤が好評なのはいやだなぁ。どうせユーザなんてそういう重要なことがわかんないのサ!」とでも考えたかどうかはわからないが、その結果として起動時のファイルチェックを非常に簡単なものに書き換えたのだと思える。
  292.  ファイルチェックをどのように書き換えたのか? それを説明する前に、オリジナル茄子の起動時のログファイルチェックを挙げる。1つ前のバージョンの茄子Rまでは同じだったと思われる。
  293.   1.ファイル名がネーミングルールに合っているかのチェック
  294.   2.リソースが全部揃っているかのチェック
  295.  實篤はリソースチェックを起動時から会議室選択時に移した(というか最初からそう実装した)。これが負荷分散となった。
  296.  茄子R0.3βは少なくともリソースチェックは起動時にはしなくなった。ネーミングルールチェックをどうしたかは実験が必要だが作者本人に尋ねるのがいちばんよい。
  297.  ポイントはリソースチェックを省略した代りに新しい別のチェックを入れたのではないかということだ。
  298.   3.クリエータが'Pnut'かどうかのチェック
  299.  理由は次のように考えられる。「リソースのチェックを外すだけではやはり不安なので、確実にログファイルと判断できる'Pnut'かどうかのチェックを新たに入れることにすれば良いだろう」「さいわいなことにファイルタイプのチェックはほとんど負荷がない」ということではないだろうか?
  300.  まいったね。
  301.  この件に関して何が問題かというと、茄子形式ログファイルは'TEXT'というファイルタイプなのである。この'TEXT'というファイルタイプはあらゆるエディタやワープロが使うので結局は「ファイルタイプでは何も判断しない」という了解の上でしか使えない。そしてこの「ファイルタイプでは何も判断しない」という了解は「できればクリエータでも何も判断しない」という合意につながる(NisusWriterは明確にこれを破っている)。
  302.  オリジナル茄子がログファイルを別のファイルタイプにしていたなら何の問題もなかったのであるが、'TEXT'を使った(当時のエディタは'TEXT'しか開けないものが多かったのが理由と推測される)ため、「ログファイルかどうか」のチェックが必要になったと私は解釈している。
  303.  クリエータチェックを導入してもしなくても結果は同じだということは少し考えればすぐわかる。クリエータチェックの導入理由は「不安なので」以外になく、実はこれは全く根拠を持たない。
  304.  茄子形式ログファイルは、指定したフォルダに作られるという前提条件があるかぎり、ネーミングルールチェックを通るファイルは茄子形式ログファイルの有力候補と考えてよいことになる。逆に、壊れた茄子形式リソースを持つファイルは茄子形式ログファイル以外にはなく、壊れた茄子形式リソースを持つのは普通'Pnut'のクリエータを持つ(ほとんどの茄子向けログファイルを作るツールは'Pnut'の'TEXT'を作るため)。
  305.  そもそも茄子形式ログファイルを作るツールは「ブラウザ」側ではない。ひとつの可能性としてツールのクリエータを持つ'TEXT'というものが存在しうる(たまたまこれまではなかったわけだ)。こういった'TEXT'を排除してしまうのはログブラウザの要求される仕様から外れていると思う。
  306.  
  307. 転載自由
  308. 転載後メール
  309.  
  310. 1996.05.17
  311.  
  312. {*****}
  313.  
  314.  フォルダ設定に関しては暫定的な処置であったことは事実です。ただし、頻繁に使うことのない部分のため後回しになったわけです。必要な最低限の機能に優先度を付けて実装するというのは初期開発においてあたりまえなことです。最初のリリース後、他のアプリでフォルダ設定向けに標準ファイルパッケージを使うというクラスを用意したので、それを使うようになります。けして「DOSライク」にしようとしたわけではありません。簡便にフォルダを指定させる場合に他にどういう方法があるか示してください。パス指定は初期のHyperCardでも使われた手法です。ScriptEditorでも似たような状況だと思いましたがこれは改善されたのかな? まあ、UI的に誉められたものではありませんが。
  315.  その「DOSライク」なエディタが他のエディタの機能に影響を与えたことも事実です。「DOS」に似ている似ていないというレベルの低い評は意義があるとは思えません。ところでそんなに「DOSライク」でしたか? ステータス行、ファイル終端記号、改行記号、コントロールコードの表示以外に似ていると感じさせる部分は私には思い当たりません。これらの機能はその後他のエディタに多く取り入れられているものです。けして本来DOS固有のものでないのです。「DOS」でも便利な部分はどんどん取り入れるべきなのです。キャッチコピーとして「DOSライク」を使ったのは私自身ですが、なんらかの評価基準として、また否定的な意味で使った覚えはありません。
  316.  あと、安定性を見習うというのは非常に難しいことです。安定性の確保や維持にどんなに労力が必要かは開発者でなければわからない事なのかもしれません。
  317.  實篤の機能が少ないのは事実ですので、それはかまいません。機能の豊富さでアプリケーションを選定するのは一般的なことです。機能の量と安定度というのはある程度相反するもので、安定化にかかるコストはソフト開発の中で不当に過小評価されている部分でしょう。
  318.  實篤は安定性の意義を理解した人にのみ使ってほしいのです。
  319.  機能が少ないのはユーザを選別するためです。「安定してるが機能の少ない茄子」というのは實篤の基本コンセプトです。
  320.  
  321. 1996.05.17
  322.  
  323. {*****}
  324.  
  325.  褌・エディットの積年の問題点にメスを入れた。インライン入力のチューンアップである。
  326.  これまでの褌・エディットのインライン入力はそもそもTSMインラインのことを考えずに実装したものに無理矢理対応させたがゆえの動作のぎこちなさが目立っていた。テキストの挿入と削除が独立に実装されていたためインライン入力時に全体がちらちらし、無駄な動きが多かった。今回のバージョンはようやくこれを「挿入と削除が融合した処理」を用意することで対応した。いやはや長かった。
  327.  もはやこの辺の処理は他人の書いたソースに等しい。ともかく現状で何をやっているのかの詳しい解読・理解に骨が折れた。
  328.  ついでにバグの原因となる部分も発見し、比較的まれにウィンドウ外の画面データがテキストのある部分にコピーされるという問題も解消したのではないかと見ている。問題がなくなったかどうかはこれからのロードテストで判明するだろう。
  329.  ともかくやっとこれでインライン入力がぎこちないというのはなくなった。以前よりは大分入力スピードも速くなるであろう。置き換えの処理は今まですべていったん削除してから挿入という処理を経ていたのだが、いわゆるペーストもフィルタも削除処理が見えなくなった。
  330.  
  331. 1996.05.21
  332.  
  333. {*****}
  334.  
  335.  去年のマックデベジャ「特集・スプリプティング時代の始動」をひっぱりだしてきて「Open Scripting Architecture」を読むと、AppleEventやOSA関連で頼れる解説記事は「Apple Object and You」と「Better Apple Event Coding Through Objects」があるとわかります。「Apple Object and You」はいずれ読もうと以前にプリントアウト(developのCD-ROMから)して積ん読してたのですが、邦訳がマックデベジャのバックナンバーにあることもわかりました。
  336.  インサイドマックの「Interapplication Communication」とそのマックデベジャのバックナンバーを手に入れようと新宿、お茶の水、秋葉原と歩きました。疲れました。
  337.  IMのIACは結局のところ新宿紀伊国屋、新宿さくらやOA館、新宿三省堂、お茶の水丸善、お茶の水三省堂、お茶の水書泉グランテ、LAOXマック館のどこにもなく、「ここになかったらBergさんに文句を言おう」と思いつつMaxBugにいったらドーンと並んでました。
  338.  マックデベジャのバックナンバーはもちろんどこにもありません。
  339.  で、ついでに六角さん推薦の「Macintoshプロフェッショナルプログラミング」も買ってきました。買う前に目次を読んだのですが、これはタイトルが悪いですね。多くのページがAppleEvent、OSA、AppleScriptの話ですから、そういったことがわかるタイトルじゃないとなかなか気づかない。あまりにも一般的なタイトルすぎます。
  340.  で、帰ってきてから良く見るとなんと「Apple Object and You」と「Better Apple Event Coding Through Objects」の邦訳が付録の形で収録されてるではないですか! それを先にいいなさい!
  341.  IMのIACの邦訳版がほしいなぁ。
  342.  
  343. 1996.05.25
  344.  
  345. {*****}
  346.